//
// Created by PC on 2023/6/19.
// string 内置方法insert(), erase(),substr(),find(),rfind()
// find_first_of(),empty(),swap()
//


#include <iostream>

using namespace std;

int main()
{
    string a = "abcdefg";
    cout<<"original:"<<a<<endl;
    // insert()
    a=a.insert(2,"123ab");
    cout<<"insert:"<<a<<endl;
    // find() 函数最终返回的是子字符串第一次出现在字符串中的起始下标
    cout<<"find:"<<a.find('3')<<endl;
    // 如果没有查找到子字符串，那么会返回 string::npos，它是 string 类内部定义的一个静态常成员，用来表示 size_t 类型所能存储的最大值。必定大于字符串长度(也可以以此来判定是否找到)
    cout<<"find:"<<a.find('A')<<endl;
    if (a.find('A')==string::npos)
        printf("no find\n");
    else
        printf("found at :%d\n",a.find('A'));
    // rfind(char c, int pos) 从pos开始从后向前查
    cout<<"rfind: "<<a.rfind('a',6)<<endl;
    // erase()
    // 从索引2开始删除3个,第二个形参如果空缺的话, 代表一直删到最后一个
    a=a.erase(2,5);
    cout<<"erase:"<<a<<endl;
    // string substr(int pos=0 , int n = npos) 从pos开始截取n个
    a=a.substr(1,5);
    cout<<"substr:"<<a<<endl;

    return 0;
}